package com.powerteam.mapper.sys;

import com.powerteam.model.sys.Menu;
import org.apache.ibatis.annotations.Mapper;

import java.util.List;

/**
 * 视图表相关的操作
 *
 * @author jinming.zhang
 * @version 0.0.1
 * @date 2021/12/30
 */
@Mapper
public interface MenuMapper {

    /**
     * 查询所有菜单信息
     *
     * @return 菜单列表
     */
    List<Menu> findAllMenu();

    /**
     * 根据用户Id查询用户菜单信息
     *
     * @param userId
     * @return
     */
    List<Menu> findUserMenuTree(Integer userId);

    /**
     * 查询某角色的菜单列表(列表)
     *
     * @param roleId
     * @return List<Menu>
     * @Author jinming.zhang
     * @Date 2022/1/11
     */
    List<Menu> findRoleMenu(Integer roleId);

    /**
     * 检查菜单名称是否重复
     *
     * @param menu
     * @return Boolean
     * @Author jinming.zhang
     * @Date 2022/1/11
     */
    Boolean existMenu(Menu menu);

    /**
     * 查找最大菜单索引
     *
     * @param
     * @return Integer
     * @Author jinming.zhang
     * @Date 2022/1/11
     */
    Integer findMaxMenuIndex();

    /**
     * 新增菜单
     *
     * @param menu
     * @return int
     * @Author jinming.zhang
     * @Date 2022/1/11
     */
    int insert(Menu menu);

    /**
     * 删除当前菜单
     *
     * @param menuId
     * @return int
     * @Author jinming.zhang
     * @Date 2022/1/11
     */
    int delete(Integer menuId);

    /**
     * 根据菜单Id获取菜单信息
     * @param menuId
     * @Author jinming.zhang
     * @Date 2022/1/11
     * @return Menu
     */
    Menu findById(Integer menuId);

    /**
     * 更新菜单
     * @param menu
     * @Author jinming.zhang
     * @Date 2022/1/11
     * @return int
     */
    int update(Menu menu);

    /**
     * 找到某菜单的前一个菜单
     * @param menuId
     * @Author jinming.zhang
     * @Date 2022/1/11
     * @return Menu
     */
    Menu findPreviousMenu(Integer menuId);

    /**
     * 找到某菜单的下一个菜单
     * @param menuId
     * @Author jinming.zhang
     * @Date 2022/1/11
     * @return Menu
     */
    Menu findNextMenu(Integer menuId);
}
